home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / taropyon / silib / inc / ev / evque.h next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  2.1 KB  |  76 lines

  1. #ifndef    _EVQUE_H
  2. #define    _EVQUE_H
  3.  
  4. #ifndef    _SIEV_H
  5. #    include    <siev.h>
  6. #endif
  7.  
  8. #define    EVQUESET_KEY(_ev,_ch,_ec)                                    \
  9. {    if ( (_ev)->bufLen < (_ev)->bufSiz )                            \
  10.     {    EVQUE_T    *_que;                                                \
  11.         _que = &( (_ev)->queBuf[(_ev)->bufPos] );                    \
  12.         _que->typ = EVQUE_KEY_ON;                                    \
  13.         _que->clk = clock();                                        \
  14.         _que->ev.key.ch = (_ch) & 0xFFFF;                            \
  15.         _que->ev.key.ec = (_ec) & 0xFFFF;                            \
  16.         (_ev)->bufPos = ((_ev)->bufPos + 1) & ((_ev)->bufSiz-1);    \
  17.         ++((_ev)->bufLen);                                            \
  18.     }                                                                \
  19. }
  20.  
  21. #define    EVQUESET_MOS(_ev,_typ,_sw,_x,_y)                            \
  22. {    if ( (_ev)->bufLen < (_ev)->bufSiz )                            \
  23.     {    EVQUE_T    *_que;                                                \
  24.         _que = &( (_ev)->queBuf[(_ev)->bufPos] );                    \
  25.         _que->typ = (_typ);                                            \
  26.         _que->clk   = clock();                                        \
  27.         _que->ev.mos.point.x = (_x);                                \
  28.         _que->ev.mos.point.y = (_y);                                \
  29.         _que->ev.mos.sw      = (_sw);                                \
  30.         (_ev)->bufPos = ((_ev)->bufPos + 1) & ((_ev)->bufSiz-1);    \
  31.         ++((_ev)->bufLen);                                            \
  32.     }                                                                \
  33. }
  34.  
  35. #define    EVQUE_CHK(_ev)    \
  36. (    (_ev)->quePtr                                                        \
  37.     ? ((_ev)->quePtr)                                                    \
  38.     : (((_ev)->bufLen > 0 ? &((_ev)->queBuf[(_ev)->readPos]) : NULL))    \
  39. )
  40.  
  41. #define    EVQUE_NEXT(_ev)                                                    \
  42. {    if ( (_ev)->quePtr )                                                \
  43.     {    EVQUE_T    *_que;                                                    \
  44.         _que = (_ev)->quePtr;                                            \
  45.         (_ev)->quePtr = (_ev)->quePtr->next;                            \
  46.         SI_FREE(_que);                                                    \
  47.     } else                                                                \
  48.     {    if ( (_ev)->bufLen > 0 )                                        \
  49.         {    (_ev)->readPos = ((_ev)->readPos + 1) & ((_ev)->bufSiz-1);    \
  50.             --((_ev)->bufLen);                                            \
  51.         }                                                                \
  52.     }                                                                    \
  53. }
  54.  
  55. #define    EVQUEUNGET_KEY(_ev,_ch,_ec)        \
  56. {    EVQUE_T    _que;                        \
  57.     _que.typ = EVQUE_KEY_ON;            \
  58.     _que.clk = clock();                    \
  59.     _que.ev.key.ch = (_ch) & 0xFFFF;    \
  60.     _que.ev.key.ec = (_ec) & 0xFFFF;    \
  61.     EV_ungetQue( &_que );                \
  62. }
  63.  
  64. #define    EVQUEUNGET_MOS(_ev,_typ,_sw,_x,_y)    \
  65. {    EVQUE_T    _que;                            \
  66.     _que.typ = (_typ);                        \
  67.     _que.clk   = clock();                    \
  68.     _que.ev.mos.point.x = (_x);                \
  69.     _que.ev.mos.point.y = (_y);                \
  70.     _que.ev.mos.sw      = (_sw);            \
  71.     EV_ungetQue( &_que );                    \
  72. }
  73.  
  74.  
  75. #endif
  76.